/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jomijushi.fid.servicios;


import com.jomijushi.fid.dao.TipoClienteImplementsDAO;
import com.jomijushi.fid.dao.TipoClienteInterfazDAO;
import com.jomijushi.fid.dominio.FidTipoCliente;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;


/**
 * Servicio de consultas y operaciones de datos para la entidad
 * TipoCliente.
 * @author Pedro Shiguihara J
 */
public class TipoClienteImplementsService extends JpaService<Integer,FidTipoCliente> implements TipoClienteInterfazService {


    /* Atributos */
    private TipoClienteInterfazDAO tipoClienteDAO = new TipoClienteImplementsDAO();   


   


   /**
    * Dado un objeto FidTipoCliente, se registra en la base de datos.
    * @param objTipoCliente Objeto FidTipoCliente que será registrada en la base de datos.
    */
    public void crearTipoCliente(FidTipoCliente objTipoCliente) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        tipoClienteDAO.setEntityManager(em);
        tipoClienteDAO.persist(objTipoCliente);
        em.getTransaction().commit();
        em.close();
    }


    /**
     * Dado un objeto FidTipoCliente, se modifica en la base de datos.
     * @param objTipoCliente Objeto FidTipoCliente que será modificada en la base de datos.
     */
    public void editarTipoCliente(FidTipoCliente objTipoCliente) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        tipoClienteDAO.setEntityManager(em);
        tipoClienteDAO.merge(objTipoCliente);
        em.getTransaction().commit();
        em.close();
    }


    /**
     * Dado un objeto FidTipoCliente, se elimina de la base de datos.
     * @param id ID de un objeto FidTipoCliente que será eliminada de la base de datos.
     */
    public void eliminarTipoCliente(int id) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        tipoClienteDAO.setEntityManager(em);
        FidTipoCliente fidTipoCliente = null;
        fidTipoCliente = em.getReference(FidTipoCliente.class, id);
        fidTipoCliente.getId();
        tipoClienteDAO.remove(fidTipoCliente);
        em.getTransaction().commit();
        em.close();
    }


     /**
     * Dado un id de un objeto FidTipoCliente, se recupera de la base de datos.
     * @param id Identificador (id) del objeto FidTipoCliente.
     * @return id ID de un objeto FidTipoCliente que será recuperada de la base de datos.
     */
    public FidTipoCliente buscarTipoCliente(int id)
    {
        EntityManager em = emf.createEntityManager();
        try {
            tipoClienteDAO.setEntityManager(em);
            FidTipoCliente frt = null;
            frt = tipoClienteDAO.findById(id);
            return frt;
        } finally {
            em.close();
        }
    }


    /**
     * Dado un conjunto de parámetros, se recuperará una lista de objetos FidTipoCliente de la base de datos.
     * @param hayConsulta Determina si el parametro "jpql" viene con una consulta (true) o vacío (false).
     * @param jpql Consulta JPQL para retornar objetos de la base de datos.
     * @param esListarTodo Indicador para determinar si se hará un listado de todos los objetos encontrador (true)
     * o sólo de una parte, segmentada por los parametros "nRegs" y "regIni" (false)
     * @param nRegs Cantidad de registros a ser retornados de la base de datos de todos los encontrados.
     * @param regIni Número de registro recuperado desde donde parte el conteo de los nRegs a ser listados.
     * @return objTipoCliente Objeto FidTipoCliente que será recuperada de la base de datos.
     */
    public List<FidTipoCliente> listarTiposCliente(boolean hayConsulta, String jpql, boolean esListarTodo, int nRegs, int regIni)
    {
        EntityManager em = emf.createEntityManager();
        try {
            tipoClienteDAO.setEntityManager(em);
            List<FidTipoCliente> lst = tipoClienteDAO.listarTipoCliente(hayConsulta, jpql, esListarTodo, nRegs, regIni);
            return lst;
        } finally {
            em.close();
        }
    }


}
